import { auth } from './auth.js'

/**
 * 登录检查工具
 */

/**
 * 检查登录状态，未登录则提示并跳转登录页
 * @param {String} message 提示信息
 * @returns {Boolean} 是否已登录
 */
export function checkLogin(message = '请先登录') {
	if (!auth.isLoggedIn()) {
		uni.showModal({
			title: '提示',
			content: message,
			showCancel: true,
			cancelText: '取消',
			confirmText: '去登录',
			success: (res) => {
				if (res.confirm) {
					// 用户点击了"去登录"
					uni.navigateTo({
						url: '/pages/login/login'
					})
				}
			}
		})
		return false
	}
	return true
}

/**
 * 强制跳转登录（不提示）
 */
export function forceLogin() {
	uni.navigateTo({
		url: '/pages/login/login'
	})
}

/**
 * 需要登录的页面列表
 */
const AUTH_PAGES = [
	'/pages/cart/cart',           // 购物车
	'/pages/myInfo/myInfo',       // 我的
	'/pages/profile/profile',     // 个人资料
	'/pages/orderList/orderList', // 订单列表
	'/pages/ConfirmOrder/ConfirmOrder', // 确认订单
	'/pages/memberCenter/memberCenter', // 会员中心
	'/pages/commission/commission',     // 佣金
	'/pages/points/points',            // 积分
	'/pages/coupon/coupon',            // 优惠券
	'/pages/myPoints/myPoints',        // 我的积分
	'/pages/myRewards/myRewards',      // 我的奖励
	'/pages/myCoupons/myCoupons',      // 我的优惠券
	'/pages/myCollections/myCollections', // 我的收藏
	'/pages/address/address',          // 收货地址
	'/pages/newAddress/newAddress',    // 新增地址
	'/pages/editAddress/editAddress'   // 编辑地址
]

/**
 * 检查页面是否需要登录
 * @param {String} url 页面路径
 * @returns {Boolean} 是否需要登录
 */
export function isAuthRequired(url) {
	return AUTH_PAGES.some(page => url.includes(page))
}

/**
 * 页面跳转前的登录检查
 * @param {String} url 要跳转的页面路径
 * @param {String} message 提示信息
 * @returns {Boolean} 是否可以跳转
 */
export function checkBeforeNavigate(url, message = '该功能需要登录，是否前往登录？') {
	console.log('checkBeforeNavigate 被调用:', url)
	console.log('是否需要登录:', isAuthRequired(url))
	console.log('当前登录状态:', auth.isLoggedIn())
	
	if (isAuthRequired(url)) {
		return checkLogin(message)
	}
	return true
}

/**
 * 包装需要登录的函数
 * @param {Function} func 需要登录才能执行的函数
 * @param {String} message 提示信息
 * @returns {Function} 包装后的函数
 */
export function requireLogin(func, message = '该功能需要登录') {
	return function(...args) {
		if (checkLogin(message)) {
			return func.apply(this, args)
		}
	}
}
